import axios from 'axios'
import { message } from 'antd'
import qs from 'qs'
import { getItem, removeItem } from './utils/store';
const lang=document.documentElement.lang;


// 全局默认值
// axios.defaults.baseURL = BACK_BASE_URL;
axios.defaults.withCredentials=true;
 // axios.defaults.baseURL = process.env.NODE_ENV === "production" ? "https://saas-console.starcharge.com" : "http://10.9.39.124:8011";
axios.defaults.baseURL = process.env.NODE_ENV === "production" ? "http://saas.k8s.star-charge.com" : "http://10.9.39.124:8011";

axios.interceptors.request.use(function(config) {
    // 在发送请求之前在header里加入token，并转换参数为form形式提交
    config.data = qs.stringify(config.data);
    //国际化配置
    config.data=config.data?`${config.data}&locale=${lang}`:`locale=${lang}`;
    // 判断是否存在token，如果存在的话，则每个http header都加上token
    const userInfo = JSON.parse(getItem("token"));
    if (userInfo && userInfo.token) {
        config.headers.Authorization = userInfo.token;
    }
	return config;
}, function(error) {
    // 对请求错误做些什么
    errorHandle(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function(response) {
    // 对响应数据做点什么modifyPass
    if (response.data && response.data.code !== '200'&&response.data.code!=='402') {
        const errorMsg = response.data.text ? response.data.text : response.data.code;
        message.error(errorMsg);
        return null;
	}

    if (response.data &&response.data.code === '402') {
        // 删除localStorage里的用户信息
        removeItem("token");
        window.location.href = "#newLogin";
        return response;
    }
	//某些业务会再夹一层 例如vin码下发，以及计划
	if(response.data&&response.data.code==='200'&&response.data.data&&response.data.data.code==="400"){
        const errorMsg = response.data.data.msg ? response.data.data.msg : response.data.data.code;
        message.error(errorMsg);
    }
    //业务代码 data===null时直接返回null
    if (response.data && response.data.code === '200'&&response.data.data===null) {
        return null
    }
    return response.data;
}, function(error) {
    // 对响应错误做点什么
    errorHandle(error);
});

function errorHandle(error) {
    if (error.response) {
        // 请求已发出，但服务器响应的状态码不在 2xx 范围内
        console.log(error.response.data);
        console.log(error.response.status);
        console.log(error.response.headers);
    } else {
        // Something happened in setting up the request that triggered an Error
        console.log('Error', JSON.stringify(error));
    }
    message.error("服务器请求失败：" + error.message);
    return  Promise.reject(error);
}
